﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace MsForgeReboot.Framework.Interfaces
{
    using System.Web;

    using MsForgeReboot.Framework.Entities;
    using PagedList;

    /// <summary>
    /// Defines operations on <see cref="Speaker"/> 
    /// </summary>
    public interface ISpeakerService
    {
        /// <summary>
        /// Gets the paged list of speakers.
        /// </summary>
        /// <returns></returns>
        IPagedList<Speaker> GetList(int pageNumber, int pageSize);

        /// <summary>
        /// Saves the instance of <see cref="Speaker" /> to the repository.
        /// </summary>
        /// <param name="speaker">The speaker.</param>
        /// <param name="files"></param>
        void Save(Speaker speaker, HttpFileCollectionBase files);

        /// <summary>
        /// Gets the by title.
        /// </summary>
        /// <param name="urlPointer">The URL title.</param>
        /// <returns>Instance of speaker</returns>
        /// <remarks>
        /// <see cref="Speaker.UrlPointer"/> is calculated on the fly. it returns a string in the format Id-FirstName-LastName
        /// </remarks>
        Speaker GetByUrlPointer(string urlPointer);

        /// <summary>
        /// Deletes by specified url pointer.
        /// </summary>
        /// <param name="urlPointer">The URL pointer.</param>
        /// <remarks>
        /// <see cref="Speaker.UrlPointer"/> is calculated on the fly. it returns a string in the format Id-FirstName-LastName
        /// </remarks>
        void Delete(string urlPointer);
   
    }
}
